package com.aoxin.mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.aoxin.model.SlfRecharge;

/**
 * 充值记录操作接口
 */
public interface SlfRechargeMapper {
	/**
	 * 充值记录查询
	 * 
	 * @param slfRecharge
	 * @return
	 */
	List<SlfRecharge> getSlfRecharge(SlfRecharge slfRecharge);

	List<SlfRecharge> getSlfPayRecharge(Integer userId);

	/**
	 * 充值记录修改
	 * 
	 * @param slfRecharge
	 * @return
	 */
	Integer updateSlfRecharge(SlfRecharge slfRecharge);

	/**
	 * 充值记录批量删除
	 * 
	 * @param recharges
	 * @return
	 */
	Integer deleteRecharge(@Param("recharges") List<Integer> recharges);

	/**
	 * 充值记录添加
	 * 
	 * @param slfRecharge
	 * @return
	 */
	Integer insertSlfRecharge(SlfRecharge slfRecharge);

	/**
	 * 充值记录删除
	 * 
	 * @param recharge
	 * @return
	 */
	Integer deleteSlfRecharge(@Param("recharge") Integer recharge);

	Integer getPayStatus(Integer recharge);

	/**
	 * 查询首充阀值
	 * 
	 * @return
	 */
	List<Map<String, Object>> queryFirstChargeThreshold(@Param("firstChargeThresholdId") Integer firstChargeThresholdId);

	/**
	 * 查询首充历史
	 * 
	 * @param userId
	 * @return
	 */
	Integer queryFirstChargeHistory(@Param("userId") Integer userId,@Param("firstChargeThresholdId") Integer firstChargeThresholdId);

	/**
	 * 添加首充历史
	 * 
	 * @param userId
	 * @param firstChargeMoney
	 * @param proportionValue
	 * @param actualMoney
	 */
	void insertFirstChargeHistory(@Param("userId") Integer userId,
			@Param("firstChargeMoney") BigDecimal firstChargeMoney,
			@Param("proportionValue") BigDecimal proportionValue, @Param("actualMoney") BigDecimal actualMoney,
			@Param("firstChargeThresholdId") Integer firstChargeThresholdId);

	/**
	 * 查询累计充值阀值
	 * 
	 * @return
	 */
	List<Map<String, Object>> queryAccumulativeRechargeMoneThreshold();

	void insertAccumulativeRechargeMoneyHistory(@Param("userId") Integer userId,
			@Param("accumulativeRechargeMoney") BigDecimal accumulativeRechargeMoney,
			@Param("accumulativeRechargeMoneyProportionValue") BigDecimal accumulativeRechargeMoneyProportionValue,
			@Param("actualMoney") BigDecimal actualMoney);

}